﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Web;
using TTBusiness.DB_Linq;
using TTBusiness;
using System.Configuration;

namespace TTBusiness.ClassDB
{
    /// <summary>
    /// Create by ThiepND 23/3/2011
    /// </summary>
    public class clsBSAccount
    {
        TTMarketing_DBDataContext objDB = new TTMarketing_DBDataContext();
        public List<tblAccount> getAll()
        {
            try
            {
                var list = from a in objDB.tblAccounts
                           select a;
                return list.ToList<tblAccount>();
            }
            catch (Exception)
            {

                throw;
            }
        }
        public List<tblAccount> getAll(bool status)
        {
            try
            {
                var list = from a in objDB.tblAccounts
                           where a.Status == status
                           select a;
                return list.ToList<tblAccount>();
            }
            catch (Exception)
            {
                throw;
            }
        }
        public tblAccount getByUserNamePassword(string username, string password)
        {
            try
            {
                var ac = objDB.tblAccounts.SingleOrDefault(a => a.UserName == username && a.Password ==
                    clsBSMD5Password.ChangeMD5(password));
                return ac;
            }
            catch (Exception)
            {
                throw;
            }
        }
        public tblAccount getByUserName(string username)
        {
            try
            {
                var ac = objDB.tblAccounts.SingleOrDefault(a => a.UserName == username);
                return ac;
            }
            catch (Exception)
            {

                throw;
            }

        }
        public tblAccount getById(int id)
        {
            try
            {
                var ac = objDB.tblAccounts.SingleOrDefault(a => a.ID == id);
                return ac;
            }
            catch (Exception)
            {

                throw;
            }
        }
        public void insert(tblAccount ac)
        {
            string password = clsBSMD5Password.RadomPassword();
            ac.Password = clsBSMD5Password.ChangeMD5(password);
            objDB.tblAccounts.InsertOnSubmit(ac);
            objDB.SubmitChanges();
            String subject = "Thông tin tài khoản";
            String body = "Bạn nhận được thư này bởi vì bạn đã tạo tài khoản tại website : <a href='" +
                HttpContext.Current.Request.Url.Host + "'>" + HttpContext.Current.Request.Url.Host +
                "</a><br/> Tên đăng nhập :" + ac.UserName + "<br/> Mật khẩu : " + password;
            clsBSSendMail.sendMail(new string[] { ac.Email }, subject, body);
        }
        public void resetPassword(int id)
        {
            try
            {
                var ac = objDB.tblAccounts.SingleOrDefault(a => a.ID == id);
                if (ac != null)
                {
                    string password = clsBSMD5Password.RadomPassword();
                    ac.Password = clsBSMD5Password.ChangeMD5(password);
                    objDB.SubmitChanges();
                    String subject = "Thay đổi mật khẩu";
                    String body = "Bạn nhận được thư này bởi vì mật khẩu đăng nhập của bạn tại website : <a href='" +
                        HttpContext.Current.Request.Url.Host + "'>" + HttpContext.Current.Request.Url.Host +
                        "</a> đã được thay đổi <br/> Tên đăng nhập :" + ac.UserName + "<br/> Mật khẩu mới : " + password;
                    clsBSSendMail.sendMail(new string[] { ac.Email }, subject, body);
                }
            }
            catch (Exception)
            {

                throw;
            }
        }
        public void resetPassword(int id, string password)
        {
            try
            {
                var ac = objDB.tblAccounts.SingleOrDefault(a => a.ID == id);
                if (ac != null)
                {
                    ac.Password = clsBSMD5Password.ChangeMD5(password);
                    objDB.SubmitChanges();
                    String subject = "Thay đổi mật khẩu";
                    String body = "Bạn nhận được thư này bởi vì mật khẩu đăng nhập của bạn tại website : <a href='" +
                        HttpContext.Current.Request.Url.Host + "'>" + HttpContext.Current.Request.Url.Host +
                        "</a> đã được thay đổi <br/> Tên đăng nhập :" + ac.UserName + "<br/> Mật khẩu mới : " + password;
                    clsBSSendMail.sendMail(new string[] { ac.Email }, subject, body);
                }
            }
            catch (Exception)
            {

                throw;
            }
        }
        public void update(tblAccount acc)
        {
            try
            {
                var ac = objDB.tblAccounts.SingleOrDefault(a => a.ID == acc.ID);
                if (ac != null)
                {
                    ac.Address = acc.Address;
                    ac.BirthDay = acc.BirthDay;
                    ac.Email = acc.Email;
                    ac.FullName = acc.FullName;
                    ac.Gender = acc.Gender;
                    ac.Phone = acc.Phone;
                    ac.Status = acc.Status;
                    ac.UserName = acc.UserName;
                    objDB.SubmitChanges();
                }
            }
            catch (Exception)
            {

                throw;
            }
        }
        public void delete(int id)
        {
            try
            {
                var ac = (from a in objDB.tblAccounts
                          where a.ID == id
                          select a).SingleOrDefault();
                objDB.tblAccounts.DeleteOnSubmit(ac);
                objDB.SubmitChanges();
            }
            catch (Exception)
            {

                throw;
            }
        }

    }
}
